package com.zhoug.common.utils;

import android.telephony.PhoneNumberUtils;

import java.util.regex.Pattern;


/**
 * 电话号码工具
 * @Author 35574
 * @Date 2020/11/6
 * @Description
 */
public class PhoneUtils {

    /**
     * 是否是手机电话
     *
     * @param phone 手机号码 11位
     * @return
     */
    public static boolean isMobilePhoneCode(String phone) {
        if (StringUtils.isNullOrEmpty(phone)) {
            return false;
        }
        //匹配手机号码
        Pattern pattern = Pattern.compile("^[1][2,3,4,5,6,7,8,9][0-9]{9}$"); // 验证手机号
        return pattern.matcher(phone).matches();
    }

    /**
     * 判断是否为座机号码
     *
     * @param phone
     * @return
     */
    public static boolean isFixedPhoneCode(String phone) {
        if (StringUtils.isNullOrEmpty(phone)) {
            return false;
        }
        boolean isPhone;
        // 验证带区号的
        if (phone.length() > 9) {
            //02312345678
            //08271234567
            Pattern p1 = Pattern.compile("^[0][0-9]{2,4}[0-9]{4,8}$");
            isPhone = p1.matcher(phone).matches();
        } else {
            // 验证没有区号的
            Pattern p2 = Pattern.compile("\\d{4,8}");
            isPhone = p2.matcher(phone).matches();
        }

        return isPhone;

    }

    /**
     * 验证是否为电话号码包括手机和座机
     *
     * @param phone
     * @return
     */
    public static boolean isPhoneCode(String phone) {
        return isMobilePhoneCode(phone) || isFixedPhoneCode(phone);
    }

    /**
     * 判断是否为电话号码 原生方法
     * @param phone
     * @return
     */
    public static boolean isGlobalPhoneNumber(String phone) {
        return PhoneNumberUtils.isGlobalPhoneNumber(phone);
    }

    /**
     * 隐藏电话号码的中间部分
     * @param phone
     * @return
     */
    public static String hideMiddle(String phone){
        if(StringUtils.isNullOrEmpty(phone)){
            return null;
        }
        if(isMobilePhoneCode(phone)){
            return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
        }else if(phone.length()>=4){
            String s=phone.substring(0,2);
            for(int i=0;i<phone.length()-4;i++){
                s+="*";
            }
            s+=phone.substring(phone.length()-2);
            return s;
//            return phone.replaceAll("(\\d{2})\\d{0,100}(\\d{2})","$1*****$2");
        }
        return phone;
    }

}
